Skip to main content
Feedback

GraphQL Threat Protection Policy

GraphQL has a relational structure that can be exploited by malicious users to overload servers with deep and cyclic queries, leading to denial-of-service (DoS) attacks. To mitigate this risk, GraphQL threat protection enforces query complexity limits based on Depth, Entries, and Operations. GraphQL API validates these limits in the query, and queries exceeding these limits result in a 400 Bad Request error.

note

GraphQL Threat Protection policy only supports the GET and POST methods.

Timing

On RequestOn Request Content
X

Configuration

PropertyRequiredDescriptionTypeDefault
maxEntriesYesThe maximum number of fields requested, including nesting in fragments.Integer (no limit)-1
maxDepthYesThe maximum allowed nesting levels of fields, including nesting in fragments.Integer (no limit)-1
maxQueryorMutationCountYesThe maximum number of allowed operations for a request.Integer (no limit)-1

HTTP Status Code

CodeMessage
400Received in the following cases:
Maximum entries exceeded.
Maximum depth exceeded.
Maximum operation exceeded.

Example

The following is a sample GraphQL query with 14 entries and 5 depths.

Request:

{
company { -------entry 1, -----depth 1
ceo { -------entry 2, -----depth 2
name -------entry 3
age -------entry 4
department { -------entry 5, -----depth 3
name -------entry 6
employees { -------entry 7, -----depth 4
id -------entry 8
name -------entry 9
position { -------entry 10, ----depth 5
title -------entry 11
salary { -------entry 12
amount -------entry 13
currency -------entry 14
}
}
}
}
}
}
}

On this Page